package light.mvc.utils;

import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;

import org.apache.commons.lang3.StringUtils;


public class StringUtil {

	/**
	 * 
	 * 
	 * ��formateString("xxx{0}bbb",1) = xxx1bbb
	 * 
	 * @param str
	 * @param params
	 * @return
	 */
	public static String formateString(String str, String... params) {
		for (int i = 0; i < params.length; i++) {
			str = str.replace("{" + i + "}", params[i] == null ? "" : params[i]);
		}
		return str;
	}
	
	public static String decodeUnicode(String theString) {      
	     char aChar;      
	     int len = theString.length();      
	     StringBuffer outBuffer = new StringBuffer(len);      
	     for (int x = 0; x < len;) {      
	    	 aChar = theString.charAt(x++);      
	    	 if (aChar == '\\') {      
	    		 aChar = theString.charAt(x++);      
	    		 if (aChar == 'u') {      
	    			 // Read the xxxx      
	    			 int value = 0;      
	    			 for (int i = 0; i < 4; i++) {      
	    				 aChar = theString.charAt(x++);      
	    				 switch (aChar) {      
	    				 	case '0':      
	    				 	case '1':      
	    				 	case '2':      
	    				 	case '3':      
	    				 	case '4':      
	    				 	case '5':      
	    				 	case '6':      
	    				 	case '7':      
	    				 	case '8':      
	    				 	case '9':      
	    				 		value = (value << 4) + aChar - '0';      
	    				 		break;      
	    				 	case 'a':      
	    				 	case 'b':      
	    				 	case 'c':      
	    				 	case 'd':      
	    				 	case 'e':      
	    				 	case 'f':      
	    				 		value = (value << 4) + 10 + aChar - 'a';      
	    				 		break;      
	    				 	case 'A':      
	    				 	case 'B':      
	    				 	case 'C':      
	    				 	case 'D':      
	    				 	case 'E':      
	    				 	case 'F':      
	    				 		value = (value << 4) + 10 + aChar - 'A';      
	    				 		break;      
	    				 	default:      
	    				 		throw new IllegalArgumentException("Malformed   \\uxxxx   encoding.");      
	    				 }      
	   
	    			 }      
	    			 outBuffer.append((char) value);      
	    		 } else {      
	    			 if (aChar == 't')      
	    				 aChar = '\t';      
	    			 else if (aChar == 'r')      
	    				 aChar = '\r';      
	    			 else if (aChar == 'n')      
	    				 aChar = '\n';      
	    			 else if (aChar == 'f')      
	    				 aChar = '\f';      
	   
	    			 outBuffer.append(aChar);      
	    		 }      
	       } else     
	    	   outBuffer.append(aChar);      
	      }      
	      return outBuffer.toString();      
		}     
	
	public static String toString(Object obj) {
		return obj != null ? obj.toString().trim() : "";
	}
	
	public static double toODouble(Object obj) {
		return toString(obj).equals("") ? 0 : Double.parseDouble(toString(obj));
	}
	
	public static int toOInt(Object obj) {
		return toString(obj).equals("") ? 0 : Integer.parseInt(toString(obj));
	}
	
	public static long toOLong(Object obj) {
		return toString(obj).equals("") ? 0 : Long.parseLong(toString(obj));
	}
	
	public static double parseDouble(double obj,String parse) {
		return toODouble(new java.text.DecimalFormat(parse).format(obj));
	}
	
	public static String encodingFileName(String fileName) {
        String returnFileName = "";
        try {
            returnFileName = URLEncoder.encode(fileName, "UTF-8");
            returnFileName = StringUtils.replace(returnFileName, "+", "%20");
            if (returnFileName.length() > 0) {
                returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
                returnFileName = StringUtils.replace(returnFileName, " ", "%20");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return returnFileName;
    }
	
	public static void main(String[] args){
		double d=StringUtil.parseDouble(3.444,"##0.00");
		System.out.println(d);
	}
	
	public static BigDecimal nvl(BigDecimal val){
		if( val != null ){
			return val;
		}
		return BigDecimal.ZERO;
	} 
	
	 /*�滻λͼ*/
    public static String replaceBitmap(String str, int ch, String rstr){
    	if(str == null || str.length() < ch){
    		return null;
    	}
    	String tmp = str.substring(0, ch-1) + rstr + str.substring(ch, str.length());  
    	return tmp;
    }

}
